import 'package:flutter/material.dart';
import 'dart:convert';
import 'dart:async';
import 'dart:io';

import 'package:rainflutter/pages/controller/page/function/page_list.dart';
import 'package:rainflutter/pages/controller/page/function/page_listSec.dart';

class DcpTabPageVC extends StatefulWidget {
  const DcpTabPageVC({Key key, this.data}) : super(key: key); //构造函数中增加参数
  final String data; //为参数分配空间
  @override
  _DcpTabPageVCState createState() => _DcpTabPageVCState();
}

//定义TAB页对象，这样做的好处就是，可以灵活定义每个tab页用到的对象，可结合Iterable对象使用，以后讲
class PageTab {
  String title;
  Widget widget;
  PageTab(this.title, this.widget);
}

class _DcpTabPageVCState extends State<DcpTabPageVC>
    with SingleTickerProviderStateMixin {
  //将每个Tab页都结构化处理下，由于http的请求需要传入新闻类型的参数，因此将新闻类型参数值作为对象属性传入Tab中
  final List<PageTab> myTabs = <PageTab>[
    PageTab('头条', PageList(pageType: 'toutiao')), //拼音就是参数值
    PageTab('社会', PageList(pageType: 'shehui')),
    // PageTab('国内', PageList(pageType: 'guonei')),
    // PageTab('国际', PageList(pageType: 'guoji')),
    // PageTab('娱乐', PageList(pageType: 'yule')),
    // PageTab('体育', PageList(pageType: 'tiyu')),
    // PageTab('军事', PageList(pageType: 'junshi')),
    // PageTab('科技', PageList(pageType: 'keji')),
    // PageTab('财经', PageList(pageType: 'caijing')),
    PageTab('时尚', PageListSec()),
  ];

  TabController _tabController;

  // AnimationController _controller;

  @override
  void initState() {
    super.initState();
    // _controller = AnimationController(vsync: this);
    _tabController = TabController(vsync: this, length: myTabs.length);
  }

  @override
  void dispose() {
    super.dispose();
    _tabController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.orangeAccent,
        bottom: TabBar(
            controller: _tabController,
            tabs: myTabs.map((PageTab item) {
              //NewsTab可以不用声明
              return Tab(text: item.title ?? '错误');
            }).toList(),
            indicatorColor: Colors.white,
            //水平滚动的开关，开启后Tab标签可自适应宽度并可横向拉动，关闭后每个Tab自动压缩为总长符合屏幕宽度的等宽，默认关闭
            isScrollable: true),
        title: Text('分栏控制器'),
        toolbarHeight: 100,
      ),
      body: TabBarView(
        controller: _tabController,
        children: myTabs.map((item) {
          return item.widget; //使用参数值
        }).toList(),
      ),
    );
  }
}
